﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL;
using System.Data;
using System.IO;
using System.Configuration;
using System.Transactions;
using System.Data.Linq;
using System.ComponentModel;
using UtilityExtensions;

namespace BOL.Banco
{
    public class GetCuentaProyectoItemList
    {
        int _count;



        public int Count(string etapaStr,
                         int startRowIndex,
                         int maximumRows,
                         string sortExpression)
        {
            return _count;
        }

        public IQueryable<CuentaProyectoListInfo> ApplySelect_CuentaProyectoInfo()
        {
            var q = from a in DbUtil.Db.CuentaProyectoItems
                    select new CuentaProyectoListInfo
                    {
                        //bitActivo = a.CuentaProyecto.bitActivo,
                        //tipoCuotaStr = (a.CuentaProyecto.bitEsMontoCI == true) ? "MONTO" : "PORCENTAJE",
                        //bancoFinanciero = a.CuentaProyecto.Banco.descripcion,
                        //idBancoFinanciero = a.CuentaProyecto.idBancoFinanciera,
                        //comentario = a.CuentaProyecto.comentario,
                        //cuenta = String.Format("{0} {1} {2}", a.CuentaProyecto.CuentaBanco.Moneda.descripcion, a.CuentaProyecto.CuentaBanco.descripcion, a.CuentaProyecto.CuentaBanco.Banco.descripcion),
                        //idInternal = a.CuentaProyecto.idInternal,
                        //cuotaInical = a.CuentaProyecto.cuotaInicial,
                        //idEtapa=a.idEtapa,
                    };
            return q;
        }


        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public IEnumerable<CuentaProyectoListInfo> Execute(string etapaStr,
                                         int startRowIndex,
                                         int maximumRows,
                                         string sortExpression)
        {
            
            var obj=new GetCuentaProyectoList();
            var q =this.ApplySelect_CuentaProyectoInfo();

            
            q = q.Where(a => (etapaStr == "0" ? a.idEtapa != 0 : a.idEtapa == Convert.ToInt32(etapaStr))
                             
                            );

            _count = q.Count();

            q = obj.ApplySort(q, sortExpression);
            return q.Skip(startRowIndex).Take(maximumRows);
        }




    }
}
